import 'dart:convert';

import 'package:base_flutter/base_flutter.dart';
import 'package:dio/dio.dart';
import 'package:flustars_flutter3/flustars_flutter3.dart';
import 'package:flutter/material.dart';
import 'package:ls_work/a_elder/models/elder_entity.dart';
import 'package:ls_work/a_elder/page/elder_grid_page.dart';
import 'package:ls_work/a_elder/page/elder_info_page.dart';
import 'package:ls_work/a_yyt/models/medical_elder_entity.dart';
import 'package:ls_work/a_yyt/page/add_sporadic_ncome_page.dart';
import 'package:ls_work/model/decode_qrcode_model.dart';
import 'package:ls_work/mvp/svp_progress.dart';
import 'package:ls_work/net/HttpUtil.dart';
import 'package:ls_work/net/net.dart';
import 'package:ls_work/net/response/food/scan_old_data.dart';
import 'package:ls_work/res/resources.dart';
import 'package:ls_work/res/styles.dart';
import 'package:ls_work/ui/select_old_page.dart';
import 'package:ls_work/util/app_navigator.dart';

// import 'package:ls_work/routers/fluro_navigator.dart';
// import 'package:ls_work/util/app_navigator.dart';
import 'package:ls_work/util/toast.dart';
import 'package:ls_work/util/utils.dart';
import 'package:ls_work/widgets/function_grid_widget.dart';
import 'package:ls_work/widgets/load_image.dart';
import 'package:ls_work/widgets/search_bar.dart' as e;

import '../../model/customer_info_model.dart';
import '../../ui/elder_detail_info_page.dart';

class ElderSearchPage extends StatefulWidget {
  final bool isSelected;
  bool needBack;

  ElderSearchPage({Key? key, this.isSelected = true, this.needBack = false});

  @override
  _ElderSearchPageState createState() => _ElderSearchPageState();
}

class _ElderSearchPageState extends State<ElderSearchPage> {
  String _keyword = '';
  int _page = 1;
  bool isMore = false;
  List<ElderInfo> dataList = [];

  var decodeModel = DecodeQrcodeModel();
  var oldModel = CustomerInfoModel();

  String tipMsg = "请输入姓名搜索";

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colours.bg_color,
        resizeToAvoidBottomInset: false,
        appBar: e.SearchBar(
          hintText: "请输入长者姓名查询",
          onPressed: (text) {
            FocusScope.of(context).unfocus();
            _keyword = text;
            if (text.isEmpty) {
              setState(() {
                dataList.clear();
              });
            } else {
              _onRefresh();
            }
          },
        ),
        body: Stack(
          children: [
            dataList.length>0?
            _cell():Center(
              child: CommonText(tipMsg,textColor: Colors.grey),
            ),
            // dataList.length > 0
            //     ? _cell()
            //     : ElderGridPage(
            //         isSelected: widget.isSelected,
            //         needBack: widget.needBack,
            //         search: true,
            //       ),
            ElevatedButton(onPressed: () async {
              var code = await Utils.scan();
              if(!code.isNullOrEmpty()){
                decodeCode(code);
              }
            }, child: Text("扫  码"),
            style: ButtonStyle(
              backgroundColor: WidgetStateProperty.all(Colours.app_main),
              shape: WidgetStateProperty.all(StadiumBorder())
            ),)
                .setLocation(left: 16, right: 16, bottom: 10)
          ],
        ));
  }

  Widget _cell() {
    return FunctionGridList(
      // physics: NeverScrollableScrollPhysics(),
        count:
            MediaQuery.of(context).orientation == Orientation.landscape ? 5 : 3,
        mainSpace: 10.0,
        crossSpace: 10.0,
      children: List.generate(dataList.length, (index){
        var item = dataList[index];
        return InkWell(
          onTap: () {
            if (widget.needBack) {
              Navigator.pop(context, dataList[index]);
            } else {
              if (widget.isSelected) {
                Navigator.pushReplacement(context,
                    new MaterialPageRoute(builder: (BuildContext context) {
                      return AddHomeSporadicIncomePage(
                        type: 0,
                        elderInfo: dataList[index],
                      );
                    }));
              } else {
                // AppNavigator.push(
                //   context,
                //   ElderInfoPage(
                //     customerId: dataList[index].id!,
                //   ),
                // );
                Go().push(ElderDetailInfoPage(customerId: dataList[index].id,));

              }
            }
          },
          child: newOldContent(MedicalElderInfo.fromJson(item.toJson())),
          // child: Container(
          //   padding: EdgeInsets.all(5.0),
          //   decoration: BoxDecoration(
          //     color: Colors.white,
          //     borderRadius: BorderRadius.circular(8),
          //   ),
          //   child: Column(
          //     mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          //     crossAxisAlignment: CrossAxisAlignment.start,
          //     children: [
          //       Row(
          //         mainAxisAlignment: MainAxisAlignment.spaceBetween,
          //         children: [
          //           Text(
          //             '${dataList[index].name}',
          //             style: TextStyles.textDark16,
          //           ),
          //           LoadAssetImage(
          //             (dataList[index].sexName??"").contains('男')
          //                 ? 'elder/e_man'
          //                 : 'elder/e_weman',
          //           ),
          //         ],
          //       ),
          //       // Gaps.vGap5,
          //       Text(
          //         '${dataList[index].age ?? ""}岁',
          //         style: TextStyles.textGray14,
          //       ),
          //       // Expanded(
          //       //   child: Gaps.vGap5,
          //       // ),
          //       Text(
          //         '${dataList[index].floorNo}#${dataList[index].roomNo}',
          //         style: TextStyles.textNormal16,
          //       ),
          //       // Gaps.vGap5,
          //       Text(
          //         dataList[index].nurseLevelName != null
          //             ? '${dataList[index].nurseLevelName ?? ""}'
          //             : "",
          //         style: TextStyles.textNormal16,
          //       ),
          //     ],
          //   ),
          // ),
        );
      }),
      // itemCount: dataList.length,
      padding: EdgeInsets.fromLTRB(10, 10, 10, 0),
      // itemBuilder: (context, index) {
      //   var item = dataList[index];
      //   return InkWell(
      //     onTap: () {
      //       if (widget.needBack) {
      //         Navigator.pop(context, dataList[index]);
      //       } else {
      //         if (widget.isSelected) {
      //           Navigator.pushReplacement(context,
      //               new MaterialPageRoute(builder: (BuildContext context) {
      //             return AddHomeSporadicIncomePage(
      //               type: 0,
      //               elderInfo: dataList[index],
      //             );
      //           }));
      //         } else {
      //           // AppNavigator.push(
      //           //   context,
      //           //   ElderInfoPage(
      //           //     customerId: dataList[index].id!,
      //           //   ),
      //           // );
      //           Go().push(ElderDetailInfoPage(customerId: dataList[index].id,));
      //
      //         }
      //       }
      //     },
      //     child: newOldContent(MedicalElderInfo.fromJson(item.toJson())),
      //     // child: Container(
      //     //   padding: EdgeInsets.all(5.0),
      //     //   decoration: BoxDecoration(
      //     //     color: Colors.white,
      //     //     borderRadius: BorderRadius.circular(8),
      //     //   ),
      //     //   child: Column(
      //     //     mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      //     //     crossAxisAlignment: CrossAxisAlignment.start,
      //     //     children: [
      //     //       Row(
      //     //         mainAxisAlignment: MainAxisAlignment.spaceBetween,
      //     //         children: [
      //     //           Text(
      //     //             '${dataList[index].name}',
      //     //             style: TextStyles.textDark16,
      //     //           ),
      //     //           LoadAssetImage(
      //     //             (dataList[index].sexName??"").contains('男')
      //     //                 ? 'elder/e_man'
      //     //                 : 'elder/e_weman',
      //     //           ),
      //     //         ],
      //     //       ),
      //     //       // Gaps.vGap5,
      //     //       Text(
      //     //         '${dataList[index].age ?? ""}岁',
      //     //         style: TextStyles.textGray14,
      //     //       ),
      //     //       // Expanded(
      //     //       //   child: Gaps.vGap5,
      //     //       // ),
      //     //       Text(
      //     //         '${dataList[index].floorNo}#${dataList[index].roomNo}',
      //     //         style: TextStyles.textNormal16,
      //     //       ),
      //     //       // Gaps.vGap5,
      //     //       Text(
      //     //         dataList[index].nurseLevelName != null
      //     //             ? '${dataList[index].nurseLevelName ?? ""}'
      //     //             : "",
      //     //         style: TextStyles.textNormal16,
      //     //       ),
      //     //     ],
      //     //   ),
      //     // ),
      //   );
      // },
    );
  }

  void _fectData() {
    SVProgressHUD page = SVProgressHUD(context);
    Map<String, Object> params = Map();
    params["page"] = _page;
    params["rows"] = 20;
    params["queryType"] = '2';
    if (!TextUtil.isEmpty(_keyword)) params['customerNameLike'] = _keyword;
    page.showProgress();
    HttpUtil.instance
        .getDio()
        .post('${HttpApi.customerElder}?${requestParams(params)}')
        .then((r) {
      page.closeProgress();
      if (r.statusCode == 200) {
        Map<String, dynamic> map = json.decode(r.toString());
        if (map["code"].toString() == "0") {
          if (map['data'] != null) {
            ElderEntity model = ElderEntity.fromJson(map['data']);
            if ((model.rows??[]).length > 0) {
              isMore =( model.rows??[]).length == 20;
              setState(() {
                if (_page == 1) {
                  /// 刷新
                  dataList.clear();
                  dataList.addAll(model.rows??[]);
                } else {
                  dataList.addAll(model.rows??[]);
                }
              });
            } else {
              if (_page == 1) {
                /// 刷新
                setState(() {
                  dataList.clear();
                  dataList.addAll(model.rows??[]);
                  tipMsg = "未搜索到长者";
                });
              }
              Toast.show("没有更多数据");

            }
          } else {
            Toast.show(map["msg"]);
          }
        } else {
          Toast.show(map["msg"]);
        }
      } else {
        Toast.show(r.statusCode.toString());
      }
    }).catchError((e) {
      page.closeProgress();
      print(e.toString());
      Toast.show(getErrorMessage(e));
    });
  }

  Future _onRefresh() async {
    _page = 1;
    _fectData();
  }

  Future<void> decodeCode(String code) async {
    try{
      var data = await decodeModel.decoed(code);
      if(data.typeCode==1){
        getOldDetail(data.id??"");
      }else{
        Toast.show("请扫描长者码");
      }
    }catch(e){
      Toast.show(NetErrorUtils.getNetError(e));
    }
  }

// Future _loadMore() async {
//   _page++;
//   _fectData();
// }
   Future<void> getOldDetail(String id) async {
     try{
       var old = await oldModel.getElderInfo(id);
       // Navigator.pop(context,old);
       if(widget.needBack){
         Navigator.pop(context,old);
       }else{
         if (widget.isSelected) {
           Navigator.pushReplacement(context,
               new MaterialPageRoute(builder: (BuildContext context) {
                 return AddHomeSporadicIncomePage(
                   type: 0,
                   elderInfo: old,
                 );
               }));
         } else {
           // AppNavigator.push(
           //   context,
           //   ElderInfoPage(
           //     customerId: old.id!,
           //   ),
           // );
           Go().push(ElderDetailInfoPage(customerId: old.id!,));
         }
       }
     }catch(e){
       Toast.show(NetErrorUtils.getNetError(e));
     }
   }
}
